//配置axios的全局基本路径 t
axios.defaults.baseURL='http://localhost:8080'
//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios

//  静态资源拦截器，路由拦截器：
// 获取访问的url，判断是否是公开资源，不是：判断是否存在登录信息，不存在：跳转到登录界面
let url = location.href;
if (url.indexOf("index.html") === -1
    && url.indexOf("register.html") === -1
    && url.indexOf("callback.html") === -1
    && url.indexOf("publish.html") === -1
    && url.indexOf("binder.html") === -1
    && url.indexOf("login.html") === -1){
    let logininfo = localStorage.getItem('logininfo')
    if(logininfo == null){
        location.href = 'login.html'
    }
}

// axios前置拦截器：让所有请求都携带token，位于axios下方
axios.interceptors.request.use(config=>{
    // 获取token
    let token =  localStorage.getItem("token");
    if(token){ // 如果token存在
        config.headers['token']=token; // 将token存入请求头中
    }
    return config;
},error => {
    Promise.reject(error);
})

// 后置拦截器：接收后端拦截器返回的信息，以便跳转页面  {success: false, message: "noLogin"}
axios.interceptors.response.use(config=>{
    let data = config.data; // 接收前端的信息
    /* 如果满足后端返回的拦截信息 */
    if(!data.success && "noLogin" === data.msg)
    {
        // 删除浏览器中的登录信息
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        // 跳转到登录界面
        location.href= "login.html"
    }
    return config;
},error => {
    Promise.reject(error)
})

/**
 * 解析url获取参数对象
 * @param url
 * @returns {{}}
 */
function parseUrlParams2Obj(url){
    //获取请求参数
    let paramStr = url.substring(url.indexOf("?")+1);//code=021FdXFa14mYlA016OGa1L3R4X0FdXFO&state=1
    let paramStrs = paramStr.split("&");//[code=021FdXFa14mYlA016OGa1L3R4X0FdXFO,state=1]
    let paramObj = {};
    for(let i=0;i<paramStrs.length;i++){
        let paramName = paramStrs[i].split("=")[0];//code
        let paramValue = paramStrs[i].split("=")[1];//021FdXFa14mYlA016OGa1L3R4X0FdXFO
        paramObj[paramName] = paramValue;
    }
    return paramObj;
}
